home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_04 / ross / decdemo.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-09  |  1.6 KB  |  78 lines

  1.  
  2.  
  3. Figure 6
  4. --------
  5.  
  6. A program to illustrate the use of the data decompression function.
  7.  
  8.  
  9. #include <stdio.h>
  10. #define MAIN
  11. #include "hufftree.h"
  12.  
  13. #define MAXBUF 1024
  14.  
  15. /*
  16.      --------------------------- unfiler - main ------------------------------
  17. */
  18.  
  19. main(int argc, char *argv[])
  20. {
  21.   FILE *ftree, *indx, *in, *out;
  22.   char bufin[MAXBUF];
  23.   char bufout[MAXBUF];
  24.   long ofst, nrecs, start, end;
  25.   int i, len, outlen;
  26.  
  27.   if (argc != 3)
  28.   { fprintf(stderr,"Usage: %s input \n", argv[0]);
  29.     exit(0);
  30.   }
  31.  
  32.   if ((in = fopen(argv[1], "rb")) == NULL)
  33.   { fprintf(stderr,"Unable to open input file %s\n", argv[1]);
  34.     exit(1);
  35.   }
  36.  
  37.   if ((out = fopen(argv[2], "wb")) == NULL)
  38.   { fprintf(stderr,"Unable to open output file %s\n", argv[2]);
  39.     exit(1);
  40.   }
  41.  
  42.   if ((ftree = fopen("htree.dat","rb")) == NULL)
  43.   { fprintf(stderr,"Unable to open htree.dat\n");
  44.     exit(1);
  45.   }
  46.   else
  47.   { fread(&root, sizeof(root), 1, ftree);
  48.     fread(ht, sizeof(ht), 1, ftree);
  49.     fclose(ftree);
  50.   }
  51.  
  52.   if ((indx = fopen("index", "rb")) == NULL)
  53.   { fprintf(stderr,"Unable to open index file\n");
  54.     exit(1);
  55.   }
  56.   else
  57.   { fread(&nrecs, sizeof(nrecs), 1, indx);
  58.   }
  59.  
  60.   for (i=0; i<nrecs; i++)
  61.   {
  62.     ofst = sizeof(nrecs) + sizeof(start) * i;
  63.     fseek(indx, ofst, SEEK_SET);
  64.     fread(&start, sizeof(start), 1, indx);
  65.     fread(&end, sizeof(end), 1, indx);
  66.     fseek(in, sizeof(char) * (start), SEEK_SET);
  67.     len = end - start;
  68.     fread(bufin, sizeof(char), len, in);
  69.     decode(bufin, &outlen, bufout);
  70.     bufout[outlen] = '\0';
  71.     fprintf(out,"%s",bufout);
  72.   }
  73.  
  74. }
  75.  
  76.  
  77.  
  78.